home *** CD-ROM | disk | FTP | other *** search
- // Imposition 1.00
-
-
-
-
- int prgalley(int file,int keyn,int reason,int arg1,int arg2,int arg3)
- {
- int width1;
-
- switch(reason)
- {
- case 0:
- return(2);
-
- case 1:
- paperarea(0,2*arg1,arg2,0,papermarks());
- papermaxarea(-paperbleed(),2*arg1+paperbleed(),arg2+paperbleed(),-paperbleed());
- return(0);
-
- case 2:
- case 8:
- case 10:
- return(1+2+4);
-
- case 3:
- return(scale(0x10000,arg2,2*arg1));
-
- case 4:
- return(1);
-
- case 5:
- width1=maxpagewidth(file);
-
- if(arg3)
- {
- paperpage(0,width1-arg1,arg2,
- width1-arg1-paperbleed(),
- width1,
- arg2+paperbleed(),
- -paperbleed(),0);
- }
- else
- {
- paperpage(0,width1,arg2,
- width1,
- width1+arg1+paperbleed(),
- arg2+paperbleed(),
- -paperbleed(),0);
-
- }
-
- paperarea(0,2*width1,arg2,0,papermarks());
- papermaxarea(-paperbleed(),2*width1+paperbleed(),
- arg2+paperbleed(),-paperbleed());
-
- return(0);
-
- case 6:
- case 7:
- case 9:
- return(0);
- }
-
- return(0);
- }
-
-
- int prgalleycount(int file,int keyn,int paperbits)
- {
- int paper;
-
- paper=papercount(1);
-
- if((paperbits & 0xF)!=2)
- {
- paper=((paper+0x3)&~0x3)/2;
- paper/=2;
- }
- else
- {
- paper=((paper+1)&~0x1)/2; /* avoid trailing blank pages */
- }
-
- return(paper);
- }
-
-
-
- void prgalleysetup(int file,int keyn,int paperbits,int paperno,int nopaper)
- {
- int bits;
- int paper;
- int parity;
- int oddevenall;
- int width1;
- int side;
- int step;
-
- paperfirstpage();
- paper=0;
- parity=1;
- side=1;
- step=1;
-
- width1=maxpagewidth(file);
-
- oddevenall=(paperbits & 0xF);
- if(oddevenall==2)
- {
- nopaper/=2;
- oddevenall=paperno & 0x1;
- paperno/=2;
- }
-
-
- bits=papernextpage();
-
- if(bits) papermaxarea(-paperbleed(),2*width1+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- while(bits)
- {
- if(bits<0)
- {
- if((oddevenall==1 && !side) || (oddevenall==0 && side))
- {
- if(paper==paperno)
- {
- if((bits & 0x1)==parity)
- {
- paperarea(0,2*width1,paperpageheight(),0,papermarks());
- papermaxarea(-paperbleed(),2*width1+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- if(!parity) /* right hand */
- {
- paperpage(1,width1,paperpageheight(),
- width1,
- width1+paperpagewidth()+paperbleed(),
- paperpageheight()+paperbleed(),
- -paperbleed(),0);
- break;
- }
- else
- {
- paperpage(0,width1-paperpagewidth(),paperpageheight(),
- width1-paperpagewidth()-paperbleed(),
- width1,
- paperpageheight()+paperbleed(),
- -paperbleed(),0);
- }
- }
- }
- }
-
- if(!parity) /* i.e. we have output a sheet of paper */
- {
- if(side==0) paper+=step;
- side=1-side;
- }
-
- if((bits & 0x1)==parity)
- {
- bits=papernextpage();
- }
- parity^=1;
- }
- else
- {
- bits=papernextpage();
- }
- }
- }
-
-
-
- /*****************************************************************************/
-
-
-
- int prpair(int file,int keyn,int reason,int arg1,int arg2,int arg3)
- {
- if(reason==2) return(1);
- else return(prgalley(file,keyn,reason,arg1,arg2,arg3));
- }
-
-
-
- int prpamcount(int file,int keyn,int paperbits)
- {
- int paper;
-
- paper=papercount(0);
-
- paper=((paper+0x3)&~0x3)/2;
- if((paperbits & 0xF)!=2) paper/=2;
-
- return(paper);
- }
-
-
-
- void prpamsetup(int file,int keyn,int paperbits,int paperno,int nopaper)
- {
- int bits;
- int paper;
- int parity;
- int oddevenall;
- int width1;
- int side;
- int step;
-
-
- paperfirstpage();
- paper=0;
- parity=0;
- side=1;
- step=1;
-
- width1=maxpagewidth(file);
-
- oddevenall=(paperbits & 0xF);
- if(oddevenall==2)
- {
- nopaper/=2;
- oddevenall=paperno & 0x1;
- paperno/=2;
- }
-
-
- bits=papernextpage();
-
- if(bits) papermaxarea(-paperbleed(),2*width1+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- while(bits)
- {
- if(bits<0)
- {
- if((oddevenall==1 && !side) || (oddevenall==0 && side))
- {
- if(paper==paperno)
- {
- if((bits & 0x1)==parity)
- {
- if(!parity) /* right hand */
- {
- paperpage(1,width1,paperpageheight(),
- width1,
- width1+paperpagewidth()+paperbleed(),
- paperpageheight()+paperbleed(),
- -paperbleed(),0);
- }
- else
- {
- paperpage(0,width1-paperpagewidth(),paperpageheight(),
- width1-paperpagewidth()-paperbleed(),
- width1,
- paperpageheight()+paperbleed(),
- -paperbleed(),0);
- }
- }
-
- paperarea(0,2*width1,paperpageheight(),0,papermarks());
- papermaxarea(-paperbleed(),2*width1+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- if(step<0) break;
- }
- }
-
- if(step>0)
- {
- if(side==0)
- {
- paper+=step;
- if(paper==nopaper)
- {
- step=-1;
- paper+=step;
- }
- else side=1;
- }
- else
- {
- side=0;
- }
- }
- else
- {
- if(side==1)
- {
- paper+=step;
- side=0;
- }
- else
- {
- side=1;
- }
- }
-
- if((bits & 0x1)==parity)
- {
- bits=papernextpage();
- }
- parity^=1;
- }
- else
- {
- bits=papernextpage();
- }
- }
- }
-
-
- /****************************************************************************/
-
-
-
- int prnormal(int file,int keyn,int reason,int arg1,int arg2,int arg3)
- {
-
- switch(reason)
- {
- case 0:
- return(1);
-
- case 1:
- paperarea(0,arg1,arg2,0,papermarks());
- papermaxarea(-paperbleed(),arg1+paperbleed(),arg2+paperbleed(),-paperbleed());
- return(0);
-
- case 2:
- case 8:
- case 10:
- return(2+4);
-
- case 3:
- return(0x10000);
-
- case 4:
- return(0);
-
- case 5:
- paperarea(0,arg1,arg2,0,papermarks());
- papermaxarea(-paperbleed(),arg1+paperbleed(),
- arg2+paperbleed(),-paperbleed());
-
- paperpage(0,0,arg2,-paperbleed(),
- arg1+paperbleed(),
- arg2+paperbleed(),
- -paperbleed(),0);
- return(0);
-
- case 6:
- case 7:
- case 9:
- return(0);
- }
-
- return(0);
- }
-
-
-
- int prnormalcount(int file,int keyn,int paperbits)
- {
- int paper;
-
- paper=papercount(((paperbits & 0xF)==2)?-1:0);
-
- if((paperbits & 0xF)!=2) paper=((paper+1)&~0x1)/2;
-
- return(paper);
- }
-
-
-
-
- void prnormalsetup(int file,int keyn,int paperbits,int paperno,int nopaper)
- {
- int bits;
- int paper;
- int parity;
-
-
- paperfirstpage();
- paper=0;
-
- if((paperbits & 0xF)==2) parity=-1;
- else
- if((paperbits & 0xF)==1) parity=1;
- else parity=0;
-
-
- bits=papernextpage();
-
- if(bits) papermaxarea(-paperbleed(),paperpagewidth()+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- while(bits)
- {
- if(bits<0)
- {
- if(((bits & 0x1)==parity) || parity<0)
- {
- if(paper==paperno)
- {
- paperarea(0,paperpagewidth(),paperpageheight(),0,papermarks());
- papermaxarea(-paperbleed(),paperpagewidth()+paperbleed(),
- paperpageheight()+paperbleed(),-paperbleed());
-
- paperpage(0,0,paperpageheight(),-paperbleed(),
- paperpagewidth()+paperbleed(),
- paperpageheight()+paperbleed(),
- -paperbleed(),0);
- break;
- }
- paper++;
- }
- }
- bits=papernextpage();
- }
- }
-
-
- /****************************************************************************/
-
- int print_handle;
-
- int print_entry(int entry,int subcode)
- {
- if(subcode || getprintmode()!=entry) setprintmode(entry);
- return(0);
- }
-
- int print_flags(int entry,string & text)
- {
- return(entry==getprintmode());
- }
-
- int print_menu(int open)
- {
- return(print_handle);
- }
-
-
- void create_print_menu(void)
- {
- print_handle=create_menu("{PRM00}");
-
- addentry_menu(print_handle,"print_entry","print_flags","","","{PRM01}");
- addentry_menu(print_handle,"print_entry","print_flags","","","{PRM02}");
- addentry_menu(print_handle,"print_entry","print_flags","","","{PRM03}");
- addentry_menu(print_handle,"print_entry","print_flags","","","{PRM04}");
- }
-
-
-
-
- void main(void)
- {
- create_print_menu();
- paperaddformat("{PRM01}",0,"prnormal","prnormalcount","prnormalsetup");
- paperaddformat("{PRM02}",1,"prgalley","prpamcount","prpamsetup");
- paperaddformat("{PRM03}",2,"prgalley","prgalleycount","prgalleysetup");
- paperaddformat("{PRM04}",3,"prpair","prpamcount","prpamsetup");
- }
-
-
-